iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0

祝大家中秋節愉快!
我自己也沒想到我會寫這個

甚麼是路徑遍歷攻擊?

就是允許駭客讀取、運行網站的伺服器上的任意文件。
獲取得東西可能有:

  • 網站程式碼和資料
  • 後端系統的憑證
  • 敏感的操作系統文件。

駭客甚至可能能夠寫入伺服器上的任意文件,從而修改網站資料或動作,最終完全控制伺服器。

如何透過檔案路徑遍歷讀取任意文件?

我們想像一下如果我們在一個網站中放一個圖片,那HTML會寫成這樣:

<img src="/loadImage?filename=218.png">

loadImage URL 採用 filename 參數並返回指定文件的內容。這些圖像文件存儲在 /var/www/images/ 的位置。

也就是圖片的路徑為:

/var/www/images/218.png

如果網站沒有防禦路徑遍歷的話,駭客就可以請求以下URL從伺服器的文件系統中搜索 /etc/passwd 文件:

https://insecure-website.com/loadImage?filename=../../../etc/passwd

../ 意思是在目錄結構中上移一級。三個連續的 ..//var/www/images/ 上移至文件系統的根,所以實際讀取的就是 /etc/passwd

Lab time

https://ithelp.ithome.com.tw/upload/images/20230929/20162491mcNIaYSPKm.png

嘗試去到/etc/passwd

/image?filename=../../../etc/passwd

https://ithelp.ithome.com.tw/upload/images/20230929/201624913kXYu05bNI.png

成功

巢狀遍歷序列

有些應用程式只不循環地移除目錄遍歷序列,這可以通過使用巢狀序列(例如 ....//....\/)來繞過。

Lab time

/image?filename=....//....//....//etc/passwd

https://ithelp.ithome.com.tw/upload/images/20230929/20162491NtgjoeEPnk.png

Web 伺服器清理

Web 伺服器可能在將輸入傳遞給網站之前移除任何目錄遍歷,駭客可能會繞過這一點,使用URL編碼或雙重URL編碼的 ../ 字符 %2e%2e%2f%252e%252e%252f。或使用替代編碼,例如 ..%c0%af..%ef%bc%8f 也有可能攻擊成功。

Lab time

我們把第一題的code偷過來用,然後改改

/image?filename=..%252f..%252f..%252fetc/passwd

https://ithelp.ithome.com.tw/upload/images/20230929/20162491prHJ19fjiD.png
https://ithelp.ithome.com.tw/upload/images/20230929/20162491GboMyfoyyw.png
成功

驗證路徑的前面

如果網站期望使用者的輸入從特定目錄開始,例如他想要指定 /var/www/images,我們就先給他然後再騙他來繞過此限制。

filename=/var/www/images/../../../etc/passwd

Lab time

/image?filename=/var/www/images/../../../etc/passwd

https://ithelp.ithome.com.tw/upload/images/20230929/20162491oIScRPpaB6.png

驗證檔案擴展名

如果網站需要輸入以某個檔案擴展名結尾(例如:.png),那我們可以使用空字節 (%00) 來有效地結束檔案路徑,例如 filename=../../../etc/passwd%00.png

Lab time

/image?filename=../../../etc/passwd%00.png

https://ithelp.ithome.com.tw/upload/images/20230929/20162491vVWnpLHrNU.png

如何防護

  • 避免使用者提供的輸入:防止路徑遍歷漏洞的最佳方法是完全避免在檔案系統API中使用使用者提供的輸入。
  • 驗證:在處理任何使用者輸入之前,先對其進行驗證。這可以通過將輸入與允許值的白名單進行比較來完成。如果不可能使用白名單,則確保輸入只包含允許的內容。
  • 規範化路徑:驗證輸入後,將其附加到基本目錄,然後使用檔案系統API獲取路徑的規範形式。然後,確保規範路徑以預期的基本目錄開頭。

上一篇
[Day 13]OS 命令注入攻擊
下一篇
[Day 15]檔案上傳漏洞
系列文
從 Moblie Development 主題被損友洗腦鬼轉 Security 的我真的可以完賽嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言